/*
 * Blocker.cpp
 *
 *  @author Bematech S.A.
 */

#include "bilbao/util/Blocker.h"

namespace bilbao
{
	namespace util
	{
		//--------------------------------------------------------------------------------
		Blocker* Blocker::_instance = NULL;
		int Blocker::numeroTentativasCodigoAtivacao = 0;
		//--------------------------------------------------------------------------------
		Blocker::Blocker( void )
		{

		}
		//--------------------------------------------------------------------------------
		Blocker::~Blocker( void )
		{

		}
		//--------------------------------------------------------------------------------
		Blocker* Blocker::getInstance( void )
		{
			if ( !_instance )
			{
				_instance = new Blocker();
			}

			return _instance;
		}
		//--------------------------------------------------------------------------------
		void Blocker::blockForTaxPurposes()
		{
			//TODO: implementar
		}
		//--------------------------------------------------------------------------------
		void Blocker::blockTemporaly()
		{
			int time = (int)pow(numeroTentativasCodigoAtivacao/3, 2);

			//TODO: fazer o bloqueio de fato na classe business
			//business->blockTemporaly(time);
		}
		//--------------------------------------------------------------------------------
		void Blocker::checkTemporaryBlock()
		{
			//Incrementar número de tentativas
			++numeroTentativasCodigoAtivacao;
			if ( numeroTentativasCodigoAtivacao % 3 == 0 )
			{
				blockTemporaly();

				//Verificando ciclo
				if (numeroTentativasCodigoAtivacao == 36)
				{
					numeroTentativasCodigoAtivacao = 0;
				}
			}
		}
	} // namespace util

} // namespace bilbao
